using Digitalmes.Application.Mes.Masters.Lines;
using Digitalmes.Application.Mes.Masters.Materials;
using Digitalmes.Application.Mes.Processes.RoutingSteps;

namespace Digitalmes.Application.Mes.Processes.Routings;

/// <summary>
/// 工艺路线DTO对象。
/// </summary>
public sealed class ProcRoutingDto : Dto
{
    /// <summary>
    /// 工艺路线编号
    /// </summary>
    [NotNull]
    public string? RoutingCode { get; set; }

    /// <summary>
    /// 工艺路线名称。
    /// </summary>
    [NotNull]
    public string? RoutingName { get; set; }

    /// <summary>
    /// 所属产线 Id
    /// </summary>
    public long LineId { get; set; }

    /// <summary>
    /// 产线
    /// </summary>
    public MdLineDto? Line { get; set; }

    /// <summary>
    /// 产品 Id
    /// </summary>
    public long ProductId { get; set; }

    /// <summary>
    /// 产品
    /// </summary>
    public MdMaterialDto? Product { get; set; }

    /// <summary>
    /// 是否为主工艺路线，默认为 true。
    /// </summary>
    /// <remarks>
    /// 主工艺路线代表是主产品，下线时表示产品完完工；
    /// 非主工艺路线表示是某些关键物料生产或检验路线，最终会与主路线进行合并。
    /// </remarks>
    public bool IsMaster { get; set; }

    /// <summary>
    /// 排序
    /// </summary>
    public int Order { get; set; }

    /// <summary>
    /// 备注
    /// </summary>
    public string? Remark { get; set; }

    /// <summary>
    /// 启用状态（0->停用，1->启用）
    /// </summary>
    public EnabledStatusEnum Status { get; set; }

    public bool IsDeleted { get; set; }

    /// <summary>
    /// 工艺步骤集合
    /// </summary>
    public List<ProcRoutingStepDto>? Steps { get; set; }

    public string? CreatedBy { get; set; }

    public DateTime CreatedTime { get; set; }

    public string? UpdatedBy { get; set; }

    public DateTime? UpdatedTime { get; set; }
}
